﻿$(window).resize(function () {
    $('#MainSplitter1').jqxSplitter({ height: CurrentHeigth() });
    $('#areasTree').jqxTree({ height: CurrentHeigth()/2 });
    $('#userCarTree').jqxTree({ height: CurrentHeigth() / 2 });
});


$('#MainSplitter1').jqxSplitter({ theme: theme, width: '100%', height: CurrentHeigth(), panels: [{ size: "300px" }] });


$.ajax({
    url: "/data/detailscar", dataType: "json", type: 'get',
    cache: false,
    contentType: 'application/json; charset=UTF-8'
}).done(function (data) {
    for (var key in data) {
        var curElem = data[key];
        curElem.Name = '<img class=\'' + curElem.Class + '\' /><span>' + curElem.Name + '</span>';
    }
    bindArrayToTree('#userCarTree', data);
});
$('#userCarTree').jqxTree({
    allowDrag: false, checkboxes: true,
    hasThreeStates: true,
    allowDrop: false,
    height: CurrentHeigth()/2,
    width: '100%',
    theme: theme
});

$('#areasTree').jqxTree({
    width: '100%', height: CurrentHeigth()/2,
    allowDrag: true,
    allowDrop: true,
    hasThreeStates: true, theme: theme,
    dragEnd: function (item, dropItem) {
        if (dropItem == null)
            return true;
        var parentItem = $('#areasTree').jqxTree('getItem', item.element).parentElement;
        if (parentItem == null) {
            parentItem = new Object();
            parentItem.id = 'tree_-1';
        }

        if (dropItem.id.toString().indexOf("tree_") == -1)				//если отпустили курсор на точке учета
            return false;												//отмена при попытке вставить в точку учета
        $.ajax({
            url: "/data/UserAreaManager?id=" + item.id,
            data: JSON.stringify({ PointId: parentItem.id, MasterId: dropItem.id }),
            dataType: "json", type: 'POST',
            contentType: 'application/json; charset=UTF-8'
        }).done(function () {//если запрос успешно прошел
            rebuildTree();
        });

        return false;//элемент возвращается назад						
    }
});
$(document).ready(function () {
    // Создание объекта, управляющего работой с картой. Интервальный таймер отключен.
    gmapMgr = new monitor.GMapManager('map_canvas', false);
    // При изменении размера HTML-контейнера, содержащего карту,
    // изменить размер самой карты.
    $('#MainSplitter1').on('resize', function () {
        //$('#MainSplitter1').jqxSplitter({ height: $(window).height() - 130 });
        gmapMgr.resize();
    });
});


//затычка в виде полного обнавления деревьев
function rebuildTree() {
    //загрузка дерева зон
    $.ajax({
        url: "/data/areas", dataType: "json", type: 'GET',
        cache:false,
        contentType: 'application/json; charset=UTF-8'
    }).done(function (data) {
        for (var key in data) {
            var curElem = data[key];
            curElem.Name = '<img class=\'' + curElem.Class + '\' /><span>' + curElem.Name + '</span>';
        }
        bindArrayToTree('#areasTree', data);
    });
}

//Create context menu
var mapMenu = $("#contextMapMenu").jqxMenu({
    theme: theme,
    width: '120px',
    height: '83px',
    autoOpenPopup: false,
    mode: 'popup'
}).on('itemclick', function(event) {
    var item = $(event.args).attr("name");
    switch (item) {
    case "Start":
        gmapMgr.startDrawing();
        break;
    case "Stop":
        gmapMgr.endDrawing();
        break;
    case "Clear":
        gmapMgr.clearDrawing();
        break;
    }
});
$('#map_canvas').on('mousedown', function (event) {

    var rightClick = isRightClick(event);
    if (rightClick) {
        var scrollTop = $(window).scrollTop();
        var scrollLeft = $(window).scrollLeft();
        treeMenu.jqxMenu('close');
        mapMenu.jqxMenu('open', parseInt(event.clientX) + 5 + scrollLeft, parseInt(event.clientY) + 5 + scrollTop);
        return false;
    }
});
// disable the default browser's context menu.
$('#map_canvas').bind('contextmenu', function (e) {
    return false;
});


//Create context menu
var treeMenu = $("#contextTreeMenu").jqxMenu({
    theme: theme,
    width: '150px',
    height: '110px',
    autoOpenPopup: false,
    mode: 'popup'
}).on('itemclick', function (event) {//биндим выбор меню
    model = new Object();//обнуляем меню
    model.PointId = '';
    var item = $(event.args).attr("name");//выбираем имя выбранного элемента для анализа обработчика
    var selectedItem = $('#areasTree').jqxTree('selectedItem');//определяем выбранный элемент
    if (selectedItem != null) {
        var parentItem = selectedItem.parentId;//определяем индификатор родителя точки
        if (parentItem == 0) {//если корневой, то..
            parentItem = 'tree_-1';
        }
        switch (item) {
            case "addGroup":
                //добавление новой группы в одном уровне
                model.MasterId = parentItem;
                $('#addNewElementWindow').jqxWindow('open');
                break;
            case "addSubGroup":
                //добавление новой группы на 1 уровень выше
                if (selectedItem.id.toString().indexOf("tree_") > -1) {
                    model.MasterId = selectedItem.id;//если выбранная точка узел
                } else {
                    model.MasterId = parentItem;//если же счетчик
                }
                $('#addNewElementWindow').jqxWindow('open');
                break;
            case "addZone":
                model = new Object();//обнуляем модель еще раз
                if (selectedItem.id.toString().indexOf("tree_") > -1) {
                    model.MasterId = selectedItem.id;//если выбранная точка узел
                } else {
                    model.MasterId = parentItem;//если же счетчик
                }
                // Массив координат нарисованной зоны, если зоны нет - массив пустой.
                model.Coord = JSON.stringify(gmapMgr.getDrawingAreaCoords());
                if (model.Coord == null || model.Coord.length == 2) {
                    alert("Создайте зону сначала", "Сообщение");
                } else {
                    var items = $('#userCarTree').jqxTree('getCheckedItems');
                    if (items == null || items.length==0) {
                        alert("Не выбрано ни одной машины", "Внимание");
                    }
                    model.CarId = new Array();
                    for (var key in items) {
                        if (items[key].id.indexOf('tree_') == -1)
                            model.CarId.push(items[key].id);
                    }
                    model.CarId = GetUnicArray(model.CarId);
                    $('#addNewElementWindow').jqxWindow('open');
                }
                break;
            case "Remove":
                $.ajax({
                    url: "/data/UserAreaManager?id=" + selectedItem.id,
                    dataType: "json",
                    type: 'DELETE',
                    contentType: 'application/json; charset=UTF-8'
                }).done(function () {
                    rebuildTree();
                });
                break;
        }
    }
});
// open the context menu when the user presses the mouse right button.
$("#areasTree li").live('mousedown', function (event) {
    var target = $(event.target).parents('li:first')[0];

    var rightClick = isRightClick(event);
    if (rightClick && target != null) {
        $("#areasTree").jqxTree('selectItem', target);
        var scrollTop = $(window).scrollTop();
        var scrollLeft = $(window).scrollLeft();
        mapMenu.jqxMenu('close');
        treeMenu.jqxMenu('open', parseInt(event.clientX) + 5 + scrollLeft, parseInt(event.clientY) + 5 + scrollTop);
        return false;
    }
});
// disable the default browser's context menu.
$('#areasTree').bind('contextmenu', function (e) {
    if ($(e.target).parents('.jqx-tree').length > 0) {
        return false;
    }
    return true;
});


var model = new Object();

$('#addNewElementWindow').jqxWindow({
    width: '220', height: '100', resizable: false,
    isModal: true, autoOpen: false, theme: theme,
    cancelButton: $('#cancelNewElementButton'),
    okButton: $('#okNewElementButton')
});

$("#itemNameNewElement").jqxInput({
    placeHolder: "Краткое название", height: 25, width: '100%',
    minLength: 1, theme: theme
});
$("#cancelNewElementButton").jqxButton({ width: '100', theme: theme });
$("#okNewElementButton").jqxButton({ width: '100', theme: theme });
$("#okNewElementButton").on('click', function () {
    model.Label = $('#itemNameNewElement').val();
    if (model.Label) {
        $.ajax({
            url: "/data/UserAreaManager",
            data: JSON.stringify(model),
            dataType: "json",
            type: 'PUT',
            contentType: 'application/json; charset=UTF-8'
        }).done(function () {
            rebuildTree();
        });
    }
    $('#itemNameNewElement').val('');
});

rebuildTree();

